/**
 */
package audiomixer.impl;

import audiomixer.AudiomixerPackage;
import audiomixer.Pista;

import audiomixer.Usuario;
import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Pista</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link audiomixer.impl.PistaImpl#getId <em>Id</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getDescripcion <em>Descripcion</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getFuente <em>Fuente</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getVolumen <em>Volumen</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getGanancia <em>Ganancia</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getOrden <em>Orden</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getTiempo <em>Tiempo</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getTiempoInicio <em>Tiempo Inicio</em>}</li>
 *   <li>{@link audiomixer.impl.PistaImpl#getUsuarioCarga <em>Usuario Carga</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class PistaImpl extends EObjectImpl implements Pista {
	/**
	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getId()
	 * @generated
	 * @ordered
	 */
	protected static final int ID_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getId()
	 * @generated
	 * @ordered
	 */
	protected int id = ID_EDEFAULT;

	/**
	 * The default value of the '{@link #getDescripcion() <em>Descripcion</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDescripcion()
	 * @generated
	 * @ordered
	 */
	protected static final String DESCRIPCION_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getDescripcion() <em>Descripcion</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDescripcion()
	 * @generated
	 * @ordered
	 */
	protected String descripcion = DESCRIPCION_EDEFAULT;

	/**
	 * The default value of the '{@link #getFuente() <em>Fuente</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuente()
	 * @generated
	 * @ordered
	 */
	protected static final String FUENTE_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getFuente() <em>Fuente</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getFuente()
	 * @generated
	 * @ordered
	 */
	protected String fuente = FUENTE_EDEFAULT;

	/**
	 * The default value of the '{@link #getVolumen() <em>Volumen</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVolumen()
	 * @generated
	 * @ordered
	 */
	protected static final int VOLUMEN_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getVolumen() <em>Volumen</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getVolumen()
	 * @generated
	 * @ordered
	 */
	protected int volumen = VOLUMEN_EDEFAULT;

	/**
	 * The default value of the '{@link #getGanancia() <em>Ganancia</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGanancia()
	 * @generated
	 * @ordered
	 */
	protected static final int GANANCIA_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getGanancia() <em>Ganancia</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getGanancia()
	 * @generated
	 * @ordered
	 */
	protected int ganancia = GANANCIA_EDEFAULT;

	/**
	 * The default value of the '{@link #getOrden() <em>Orden</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOrden()
	 * @generated
	 * @ordered
	 */
	protected static final int ORDEN_EDEFAULT = 0;

	/**
	 * The cached value of the '{@link #getOrden() <em>Orden</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getOrden()
	 * @generated
	 * @ordered
	 */
	protected int orden = ORDEN_EDEFAULT;

	/**
	 * The default value of the '{@link #getTiempo() <em>Tiempo</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTiempo()
	 * @generated
	 * @ordered
	 */
	protected static final long TIEMPO_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getTiempo() <em>Tiempo</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTiempo()
	 * @generated
	 * @ordered
	 */
	protected long tiempo = TIEMPO_EDEFAULT;

	/**
	 * The default value of the '{@link #getTiempoInicio() <em>Tiempo Inicio</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTiempoInicio()
	 * @generated
	 * @ordered
	 */
	protected static final long TIEMPO_INICIO_EDEFAULT = 0L;

	/**
	 * The cached value of the '{@link #getTiempoInicio() <em>Tiempo Inicio</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getTiempoInicio()
	 * @generated
	 * @ordered
	 */
	protected long tiempoInicio = TIEMPO_INICIO_EDEFAULT;

	/**
	 * The cached value of the '{@link #getUsuarioCarga() <em>Usuario Carga</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getUsuarioCarga()
	 * @generated
	 * @ordered
	 */
	protected Usuario usuarioCarga;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PistaImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return AudiomixerPackage.Literals.PISTA;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getId() {
		return id;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setId(int newId) {
		int oldId = id;
		id = newId;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__ID, oldId, id));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getDescripcion() {
		return descripcion;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDescripcion(String newDescripcion) {
		String oldDescripcion = descripcion;
		descripcion = newDescripcion;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__DESCRIPCION, oldDescripcion, descripcion));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public String getFuente() {
		return fuente;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setFuente(String newFuente) {
		String oldFuente = fuente;
		fuente = newFuente;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__FUENTE, oldFuente, fuente));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getVolumen() {
		return volumen;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setVolumen(int newVolumen) {
		int oldVolumen = volumen;
		volumen = newVolumen;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__VOLUMEN, oldVolumen, volumen));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getGanancia() {
		return ganancia;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setGanancia(int newGanancia) {
		int oldGanancia = ganancia;
		ganancia = newGanancia;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__GANANCIA, oldGanancia, ganancia));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public int getOrden() {
		return orden;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setOrden(int newOrden) {
		int oldOrden = orden;
		orden = newOrden;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__ORDEN, oldOrden, orden));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getTiempo() {
		return tiempo;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTiempo(long newTiempo) {
		long oldTiempo = tiempo;
		tiempo = newTiempo;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__TIEMPO, oldTiempo, tiempo));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public long getTiempoInicio() {
		return tiempoInicio;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setTiempoInicio(long newTiempoInicio) {
		long oldTiempoInicio = tiempoInicio;
		tiempoInicio = newTiempoInicio;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__TIEMPO_INICIO, oldTiempoInicio, tiempoInicio));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Usuario getUsuarioCarga() {
		if (usuarioCarga != null && usuarioCarga.eIsProxy()) {
			InternalEObject oldUsuarioCarga = (InternalEObject)usuarioCarga;
			usuarioCarga = (Usuario)eResolveProxy(oldUsuarioCarga);
			if (usuarioCarga != oldUsuarioCarga) {
				if (eNotificationRequired())
					eNotify(new ENotificationImpl(this, Notification.RESOLVE, AudiomixerPackage.PISTA__USUARIO_CARGA, oldUsuarioCarga, usuarioCarga));
			}
		}
		return usuarioCarga;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public Usuario basicGetUsuarioCarga() {
		return usuarioCarga;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setUsuarioCarga(Usuario newUsuarioCarga) {
		Usuario oldUsuarioCarga = usuarioCarga;
		usuarioCarga = newUsuarioCarga;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, AudiomixerPackage.PISTA__USUARIO_CARGA, oldUsuarioCarga, usuarioCarga));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case AudiomixerPackage.PISTA__ID:
				return getId();
			case AudiomixerPackage.PISTA__DESCRIPCION:
				return getDescripcion();
			case AudiomixerPackage.PISTA__FUENTE:
				return getFuente();
			case AudiomixerPackage.PISTA__VOLUMEN:
				return getVolumen();
			case AudiomixerPackage.PISTA__GANANCIA:
				return getGanancia();
			case AudiomixerPackage.PISTA__ORDEN:
				return getOrden();
			case AudiomixerPackage.PISTA__TIEMPO:
				return getTiempo();
			case AudiomixerPackage.PISTA__TIEMPO_INICIO:
				return getTiempoInicio();
			case AudiomixerPackage.PISTA__USUARIO_CARGA:
				if (resolve) return getUsuarioCarga();
				return basicGetUsuarioCarga();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case AudiomixerPackage.PISTA__ID:
				setId((Integer)newValue);
				return;
			case AudiomixerPackage.PISTA__DESCRIPCION:
				setDescripcion((String)newValue);
				return;
			case AudiomixerPackage.PISTA__FUENTE:
				setFuente((String)newValue);
				return;
			case AudiomixerPackage.PISTA__VOLUMEN:
				setVolumen((Integer)newValue);
				return;
			case AudiomixerPackage.PISTA__GANANCIA:
				setGanancia((Integer)newValue);
				return;
			case AudiomixerPackage.PISTA__ORDEN:
				setOrden((Integer)newValue);
				return;
			case AudiomixerPackage.PISTA__TIEMPO:
				setTiempo((Long)newValue);
				return;
			case AudiomixerPackage.PISTA__TIEMPO_INICIO:
				setTiempoInicio((Long)newValue);
				return;
			case AudiomixerPackage.PISTA__USUARIO_CARGA:
				setUsuarioCarga((Usuario)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case AudiomixerPackage.PISTA__ID:
				setId(ID_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__DESCRIPCION:
				setDescripcion(DESCRIPCION_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__FUENTE:
				setFuente(FUENTE_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__VOLUMEN:
				setVolumen(VOLUMEN_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__GANANCIA:
				setGanancia(GANANCIA_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__ORDEN:
				setOrden(ORDEN_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__TIEMPO:
				setTiempo(TIEMPO_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__TIEMPO_INICIO:
				setTiempoInicio(TIEMPO_INICIO_EDEFAULT);
				return;
			case AudiomixerPackage.PISTA__USUARIO_CARGA:
				setUsuarioCarga((Usuario)null);
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case AudiomixerPackage.PISTA__ID:
				return id != ID_EDEFAULT;
			case AudiomixerPackage.PISTA__DESCRIPCION:
				return DESCRIPCION_EDEFAULT == null ? descripcion != null : !DESCRIPCION_EDEFAULT.equals(descripcion);
			case AudiomixerPackage.PISTA__FUENTE:
				return FUENTE_EDEFAULT == null ? fuente != null : !FUENTE_EDEFAULT.equals(fuente);
			case AudiomixerPackage.PISTA__VOLUMEN:
				return volumen != VOLUMEN_EDEFAULT;
			case AudiomixerPackage.PISTA__GANANCIA:
				return ganancia != GANANCIA_EDEFAULT;
			case AudiomixerPackage.PISTA__ORDEN:
				return orden != ORDEN_EDEFAULT;
			case AudiomixerPackage.PISTA__TIEMPO:
				return tiempo != TIEMPO_EDEFAULT;
			case AudiomixerPackage.PISTA__TIEMPO_INICIO:
				return tiempoInicio != TIEMPO_INICIO_EDEFAULT;
			case AudiomixerPackage.PISTA__USUARIO_CARGA:
				return usuarioCarga != null;
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (id: ");
		result.append(id);
		result.append(", descripcion: ");
		result.append(descripcion);
		result.append(", fuente: ");
		result.append(fuente);
		result.append(", volumen: ");
		result.append(volumen);
		result.append(", ganancia: ");
		result.append(ganancia);
		result.append(", orden: ");
		result.append(orden);
		result.append(", tiempo: ");
		result.append(tiempo);
		result.append(", tiempoInicio: ");
		result.append(tiempoInicio);
		result.append(')');
		return result.toString();
	}

} //PistaImpl
